/******************************
 *
 * 名   称：   字符串编解码转换公共类
 * 用   途：   base64编解码、utf编解码、des加解密
 * 作用范围：   公共的
 * 创建时间：   2022-10-03
 * 备   注：
 * 参   考：
 *  base64：  https://www.cnblogs.com/lrxing/p/5535601.html
 *      string str = "这是一条测试数据：http://img.v.cmcm.com/1.jpg";
 *      unsigned char * text = (unsigned char *)str.c_str();
 *      int len = strlen((char *)text) ;//sizeof(text)-1;
 *      string normal,encoded;
 *      mpHelper::codec_base64_encode(text,len,encoded);
 *      len = encoded.length();
 *      mpHelper::codec_base64_decode(encoded.c_str(),len,normal);
 *
 *  edit-fqh-20210927 以上base64代码存在编译错误，参照 https://zhuanlan.zhihu.com/p/103336186 进行重写
 *  openssl des: https://www.cnblogs.com/wanghaiyang1930/p/5474889.html
 *      string input="des ecb 加密测试",key="softmapd", encoded="", normal="";
 *      int a= input.length();
 *      mpHelper::codec_des_ecb_encode(input,key,encoded);
 *      mpHelper::codec_des_ecb_decode(encoded,key,normal);
 *
 ******************************/

#ifndef MPCODECUTILS_H
#define MPCODECUTILS_H

#include "mpConfig.h"
#include <string>
#include "string.h"

namespace MP{
namespace CodecUtils{

/**
     * @brief 字符base64编码
     * @param input
     * @param bytes
     * @param output
     */
void base64_encode(const unsigned char * input,int bytes, std::string & output);
/**
     * @brief 字符base64解码
     * @param input
     * @param output
     */
void base64_decode(const std::string& input,std::string & output);
/**
     * @brief 加密
     * @param input
     * @param key
     * @param output_base64
     */
void des_ecb_encode(const std::string & input,const std::string &key, std::string & output_base64);
/**
     * @brief 解密
     * @param input_base64
     * @param key
     * @param output
     */
void des_ecb_decode(const std::string & input_base64,const std::string &key, std::string & output);


/**
* @ 将UTF8格式的字符串做URL编码
* @param pOut 加密后的结果
* @param text 输入文本
*/
void utf8Url_encode(std::string& pOut,const std::string & text);
/**
* @ 将UTF8格式的字符串做URL解码
* @param pOut 加密后的结果
* @param text 输入文本
*/
void utf8Url_decode(std::string& pOut,const std::string & text);


}   //END CodecUtils
}   //END MP

#endif // MPCODECUTILS_H
